package com.iflytek.cosmo.ocr.service;

import org.springframework.web.multipart.MultipartFile;

import com.iflytek.cosmo.ocr.model.domain.MessageOutput;
import com.iflytek.cosmo.ocr.model.domain.OcrResultOutput;
import com.iflytek.cosmo.ocr.model.entity.OcrResultEntity;
import com.iflytek.cosmo.ocr.web.vo.ModifyRecResultVO;

/**
 * 识别服务接口
 *
 * @author yunsun
 */
public interface RecogniseService {

    /**
     * 处理文件列表
     *
     * @param userId            用户id
     * @param dirId             目录id
     * @param multipartFileList 文件列表
     * @param ip                客户端IP
     * @return 消息
     */
    MessageOutput<String> dealFileList(String userId, String dirId, MultipartFile[] multipartFileList, String ip);

    /**
     * 根据文件id查询识别结果
     *
     * @param fileId 文件id
     * @return 识别结果
     */
    OcrResultOutput queryRecResultByFileId(String fileId);
    /**
     * 查询高级功能的识别结果
     * @param fileId 文件ID
     * @param type 类型
     * @return
     */
    OcrResultOutput queryAdvanceRecResult(String fileId,Short type);

    /**
     * 根据文件id进行识别
     *
     * @param fileId 文件id
     * @return 识别结果
     */
    OcrResultOutput doRecByFileId(String fileId);

    /**
     * 添加或更新ocr识别结果
     *
     * @param ocrResultEntity ocr识别结果
     */
    String addOrUpdateOcrResult(OcrResultEntity ocrResultEntity);

    /**
     * 识别截图上传图片
     *
     * @param userId      用户 id
     * @param dirId       文件目录 id
     * @param imageBase64 base64 格式的图片内容
     * @param saveImage   是否保存图片
     * @param operation
     * @return 识别后的纯文本内容
     */
    MessageOutput<String> recogniseCapture(String userId, String dirId, String imageBase64, Boolean saveImage,
            String ip, int operation);

    /**
     * 识别文件中的表格部分并返回表格的html内容
     *
     * @param fileId 文件 id
     * @return
     */
    String viewTableHtml(String fileId);
    /**
     * 修改识别区域文本接口
     * <br>
     * 适用场景:	<br>
     * 调用方式:	<br>
     * 业务逻辑说明<br>
     *
     * @param modifyRecResultVO
     * @return
     * @autho dgyu
     * @time 2019年10月12日 下午5:13:29
     */
    MessageOutput<String> modifyRecResult(ModifyRecResultVO modifyRecResultVO);
}
